﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Web;
using System.IO.Compression;

namespace CtripSOA
{
    class Contorler
    {
        RequestBuild builder = new RequestBuild();
        FileOpreate fileUtils = new FileOpreate();
        Utils utils = new Utils();
        string EVENTVALIDATION = "/wEW6gQC5uHhxgECsPagvAQCyPyZHgKn2vDWCALRv/jFBALRv7jeCgLRv9yVDgLRv9i0DQLRv6zYBQLRv6j/BALhqbEnAvWq0OYFApWAu7oOAvqp9ScCgt2sxQoCo4mj7AgCoObFgQQCr+b5gQQCr+b9gQQCr+bBgQQCr+b1gQQChae6vQYChaemmg0ChaeOwA8Cr+bFgQQCgKeuvQYCgKfy0wwCgKfamQ0CgKeCwA8CgKfG9gUCtObJgQQChKeuvQYChKfamQ0ChKeCwA8Ci6fWmQ0Ci6eqvQYCi6e+wA8Ci6fC9gUCi6fu0wwCrOalggQCi6eOwA8Ci6fCjA0Ci6e6vQYCi6eGwA8Ci6femQ0Ci6eyvQYCkqfe9gUCkqf66QUCxInClwoCkqeawA8Ckqeymg0C757gCgKSp/aIAwLvnvzyBQLvnqiaBwKSp8rTDAKSp4a9BgLXxKudDQLEiareDALvntT2DwLvnoznCALEida6AwK05sGBBAKSp66aDQKGp8KMDQKGp9L2BQKGp7q9BgKGp6aaDQKGp+7pBQKGp+qIAwKGp5blCwLjnuitCQLjnvzwAgKGp47ADwKAp/LpBQLDh82JDQKHp86MDQKHp4a9BgKHp7KaDQKHp972BQKAp8aMDQKHp/rpBQKdnsDwAgLFxKOdDQKHp5bADwKcnoznCAKcnrjcDwKcnuAKApye9K0JAuWsy8cMAoenyowNAoen9ogDAoengr0GAoenrpoNAoen2vYFAoenytMMApyeyPACAoen9ukFApyexPACAsTEq50NAoennuULAoenxtMMAoun8tMMAouniuULAoungsAPAoun2pkNAounxvYFAounnogDApGn+sAPApGnqqwMApGnro0NApGn1ogDApGnkpoNApGn5r0GApGnvvcFArOdi/MDAqidi/MDAoWnqr0GAoWn1pkNAoWnvsAPAqydt6gKAoSnlsAPAoWn9sAPAoWn4r0GAoWnjpoNArTm+YEEAqzm9YEEAuee4K0JAoqnhsAPAoqn4ogDAoqnsr0GAoqn3pkNAoqnyvYFAoqn5ukFAuee9PACAoqnjuULAoqn9tMMAoWnkpoNAoCngr0GAoCnnuULAoCn8ogDAoCnrpoNAoCnlsAPAoCnxtMMAoCn2vYFApKngr0GApKnlsAPAu+e8K0JApKn9ukFApKnnuULApKnxtMMAu+e9K0JApKn2vYFApKn8ogDApKnyowNAu+exPACArTm/YEEAuXvwKUHAqzm8YEEAoWnwuULAoWnro0NAoWn2ukFAoWnvvcFAoWn1ogDAoWn5r0GAoWnqqwMAoWn+sAPAq/mpYIEAoWnksAPAoCnur0GAoCn6ogDAoCnjsAPAoCnppoNAoCnwowNAoCn/tMMAoCnluULAoCn0vYFAoan+sAPAq3mxYEEAoSnppoNAoSnur0GAoSnjsAPAoWnopoNAoWnisAPAoWntr0GAueejOcIAuee9K0JAueeuNwPAuee4AoC556kuQYCrObBgQQCiqfuiAMCiqeSwA8C557cuAYCiqfy6QUC557srQkC557IlQ0C/Imi3gwCiqe+vQYCiqeqmg0CiqfW9gUC557A8AICiqea5QsCiqfGjA0C/InOugMC/In6lwoCiqfC0wwCrOb9gQQCiqfqiAMCiqeW5QsCiqfCjA0CiqeOwA8Ciqe6vQYCiqfS9gUC55788AICiqf+0wwCr+apggQCtObxgQQCtObFgQQCkqe+vQYC757A8AIC756E5wgCkqeSwA8CoeO9qwYCxInOugMC757cuAYC75708gUC756w3A8CxImi3gwCkqea5QsCkqeqmg0CkqfC0wwCxInmzAIC757srQkCkqfW9gUCxIm+BgLEiZKpCQLEidbfDwLEiYLnAgLvnsiVDQLvnsz2DwLvnqCaBwKh46mADQLEiarjCAKSp8aMDQKSp+6IAwKSp/LpBQKAp+aIAwKAp6KaDQKAp7a9BgKAp/6MDQKAp+rpBQKAp872BQKAp4rADwKAp/rTDAKdnvjwAgKAp5LlCwKSp4bADwKHp5LADwKcnuytCQKHp8aMDQKHp769BgKHp6qaDQKHp9b2BQKHp/LpBQKcnsDwAgKHp5rlCwKHp8LTDAKLp4rADwKLp/rTDAKLp7a9BgKLp872BQKLp+aIAwKLp6KaDQKLp5bADwLgnvCtCQKLp4K9BgKLp66aDQKLp9r2BQKLp/KIAwLgnsTwAgKLp8bTDALgnojnCALgnpwKAounnuULAoenjsAPApye6K0JAoenwowNAoenur0GAoenppoNAoen0vYFAoen7ukFApye/PACAoenluULAoen/tMMAoWn3vYFAoWnmsAPAoWn+ukFAuKepLkGAoWnzowNAoWn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";
		string VIEWSTATE = "/wEPDwUJNzU1Nzk5ODAwD2QWAgIDD2QWAgIDD2QWCGYPZBYCAgEPZBYCZg8QZGQWAWZkAgIPZBYCAgEPZBYCZg8QDxYGHg1EYXRhVGV4dEZpZWxkBQ1TdWJTeXN0ZW1OYW1lHg5EYXRhVmFsdWVGaWVsZAULU3ViU3lzdGVtSUQeC18hRGF0YUJvdW5kZ2QQFdIEGOivt+mAieaLqea1i+ivleWtkOezu+e7nwdBY2NDYXNoB0FjY0NvcnAJQWNjRmxpZ2h0BUFjY0szDEFjY291bnQuQ29ycA5BY2NvdW50LlN3aXRjaA5BY2NvdW50LlZlbmRvcgtBY2NQcm92aWRlchBBY3Rpdml0eS5Cb29raW5nC0FjdGl2aXR5Lkg1DkFjdGl2aXR5Lk9yZGVyEEFjdGl2aXR5LlByb2R1Y3QPQWN0aXZpdHkuVmVuZG9yCEFEU3lzdGVtG0FmZmlsaWF0ZU1hcmtldGluZy5HaWZ0Y2FyZBZBZmZpbGlhdGVNYXJrZXRpbmcuU0VNGEFmZmlsaWF0ZU1hcmtldGluZy5Vbmlvbg5BaXJCdXMuQm9va2luZwxBaXJCdXMuT3JkZXIOQWlyQnVzLlByb2R1Y3QPQWlyQnVzLlN1cHBsaWVyDkFpckJ1cy5TdXBwb3J0CEFpckhvdGVsEEFpckhvdGVsLkJvb2tpbmcSQWlySG90ZWwuSW50ZXJmYWNlDkFpckhvdGVsLk9yZGVyFEFpckhvdGVsSW50bC5Cb29raW5nFkFpckhvdGVsSW50bC5JbnRlcmZhY2USQWlySG90ZWxJbnRsLk9yZGVyCUFyY2guQmFzZQpBcmNoLkNhY2hlCEFyY2guQ0RQDkFyY2guRnJhbWV3b3JrCEFyY2guR292DEFyY2guTG9nZ2luZwhBcmNoLk1ETQpBcmNoLk9yZGVyDUFyY2guUGF0Y2hpbmcKQXJjaC5SRFN5cwhBcmNoLlNPQQlBcmNoLlRlc3QKQXJjaC5UZXN0MgtBcmNoLlRlc3QyMg1BcmNoLlRlc3RTeW5jC0FyY2gueGFnZW50CkJhbmtTeXN0ZW0PQmFzZS5NYW5hZ2VtZW50A0JJLglCSS5CdXlPdXQMQkkuRGF0YUNoYWluC0JJLlBhd1ByaW50G0JJLlBVQlVzZXJTaW1pbGFyaXR5U2VydmljZQxCSS5SZWNvbW1lbmQJQkkuUmVmdW5kDEJJLlN0cmVhbWluZw5CSS5Vc2VyU2VydmljZQpCSV9Nb25pdG9yC0JpbmdvLkNhY2hlDUJpbmdvLkhvdHNhbGUPQmluZ28uSW50ZXJmYWNlC0JpbmdvLk9yZGVyDUJpbmdvLlByb2Nlc3MNQmluZ28uUHJvZHVjdBBCaW5nby5TT0FTZXJ2aWNlDkJpbmdvLlN1cHBsaWVyDEJpbmdvLlN3aXRjaApCaW5nby5UZXN0DkJpbmdvMS5Cb29raW5nEUJpbmdvMS5Cb3RCbG9ja2VyDkJpbmdvMS5DcmF3bGVyGEJpbmdvMS5EZXN0aW5hdGlvblNlYXJjaBpCaW5nbzEuSG90ZWxMYW5kTWFya1NlYXJjaA5CaW5nbzEuSG90c2FsZRBCaW5nbzEuSW50ZXJmYWNlCkJpbmdvMS5NRE0MQmluZ28xLk9yZGVyDkJpbmdvMS5Qcm9jZXNzDkJpbmdvMS5Qcm9kdWN0DEJpbmdvMS5SRFN5cw1CaW5nbzEuU2VhcmNoD0JpbmdvMS5TdXBwbGllcg1CaW5nbzEuU3dpdGNoC0JpbmdvMS5UZXN0DEJpbmdvMS5Ub29scw1CaW5nbzEuVmVuZG9yE0J1cy5Nb2JpbGVBUEkuT3JkZXIVQnVzLk1vYmlsZUFQSS5Qcm9kdWN0DkJ1cy5vbmxpbmVTaXRlCUJ1cy5PcmRlcgtCdXMuUHJvZHVjdBVCdXMuVGlleW91Lm9ubGluZVNpdGULQ2FyLkJvb2tpbmcLQ2FyLkNvbm5lY3QKQ2FyLk1vYmlsZQtDYXIuT3BlbkFQSQlDYXIuT3JkZXILQ2FyLlByb2R1Y3QKQ2FyLlZlbmRvcgpDYXJCb29raW5nCkNhclByb2R1Y3QLQ2hhbm5lbC5BUEkNQ2hhbm5lbC5Kb2JXUwxDaGFubmVsLlNpdGUNQ2hpYy5TZXJ2aWNlcwxDaGluZXNlLlNpdGUHQ01JUy5IUglDTUlTLlRhc2sMQ01JUy5WZW50dXJlE0NvbW11bmljYXRpb25TeXN0ZW0EQ29ycApDb3JwLkF1ZGl0DENvcnAuQm9va2luZwtDb3JwLk1vYmlsZQpDb3JwLk9yZGVyDENvcnAuUHJvY2VzcwxDb3JwLlByb2R1Y3QLQ29ycC5SZXBvcnQLQ29ycC5Td2l0Y2gJQ29ycC5Vc2VyC0NvcnAuVmVuZG9yCkNSTS5NYXJrZXQOQ3J1aXNlLkJvb2tpbmcMQ3J1aXNlLkdyb3VwDUNydWlzZS5Nb2JpbGUMQ3J1aXNlLk9yZGVyDkNydWlzZS5Qcm9kdWN0DENydWlzZS5TYWxlcw1DcnVpc2UuVmVuZG9yB0NUSS5BcHAIQ1RJLkJhc2UIQ1RJLkNvbW0JQ1RJLkVNYWlsB0NUSS5GYXgHQ1RJLklWUgxDVEkuTGl2ZUNoYXQOQ1RJLk1pZGRsZVdhcmUMQ1RJLlJlY29yZGVyB0NUSS5TTVMIQ1RJLlRvb2wJQ1RJU3lzdGVtC0NUcmFuX3RyYW5zCEN1c3RvbWVyDEN1c3RvbWVyLkFQSQxDdXN0b21lci5DTVMTQ3VzdG9tZXIuT3JkZXJJbmRleA1DdXN0b21lci5TYWxlEEN1c3RvbWVyLlNjcm1BcHAQQ3VzdG9tZXIuU3VwcG9ydA5DdXN0b21lci5Vbmlvbg1DdXN0b21lci5Vc2VyCERlbGl2ZXJ5DURlbGl2ZXJ5LkJhc2ULRElZLkJvb2tpbmcKRElZLk1vYmlsZQlESVkuT3JkZXILRElZLlByb2R1Y3QNRElZLlByb21vdGlvbg1ESVkuUmVjb21tZW5kCERJWS5SdWxlCkRJWS5WZW5kb3IYZUNvbW1lcmNlLlRyYXZlbFNob3BwaW5nB0VuZ2xpc2gLRW5nbGlzaC5BUEkKRW5nbGlzaC5DVAxFbmdsaXNoLlNpdGUPRmluYW5jZS5BY2NvdW50DEZpbmFuY2UuQmFzZQ9GaW5hbmNlLkludm9pY2UVRmluYW5jaWFsUGxhdGZvcm0uQVBJGUZpbmFuY2lhbFBsYXRmb3JtLkJvb2tpbmcXRmluYW5jaWFsUGxhdGZvcm0uSm9iV3MZRmluYW5jaWFsUGxhdGZvcm0uT2ZmbGluZRpGaW5hbmNpYWxQbGF0Zm9ybS5QYXNzcG9ydAZGbGlnaHQMRmxpZ2h0LkFnZW50DkZsaWdodC5Cb29raW5nCkZsaWdodC5DQ0gPRmxpZ2h0LkV4dGVybmFsE0ZsaWdodC5GbGlnaHRDaGFuZ2ULRmxpZ2h0LkludGwORmxpZ2h0Lk1vbml0b3IMRmxpZ2h0Lk9yZGVyDkZsaWdodC5Qcm9jZXNzDkZsaWdodC5Qcm9kdWN0DUZsaWdodC5Td2l0Y2gNRmxpZ2h0LlRpY2tldAxGbGlnaHQuVHJhZGUPRmxpZ2h0LlRyYWRlQVBJFEZsaWdodC5UcmFkZVF1aWNrQVBJDUZsaWdodC5WZW5kb3IKRmxpZ2h0SW50bBBGbGlnaHRJbnRsLkFnZW50FUZsaWdodEludGwuQWdncmVnYXRvchNGbGlnaHRJbnRsLkJhc2VJbmZvEkZsaWdodEludGwuQm9va2luZxBGbGlnaHRJbnRsLk9yZGVyEkZsaWdodEludGwuUHJvZHVjdBFGbGlnaHRJbnRsLlN3aXRjaBFGbGlnaHRJbnRsLlZlbmRvcgxGbGlnaHRQb2xpY3kNRmxpZ2h0Um91dGluZwxGbGlnaHRTeXN0ZW0QRnJhbWV3b3JrLkFCVGVzdBRGcmFtZXdvcmsuQXV0b21hdGlvbhRGcmFtZXdvcmsuQm90QmxvY2tlchxGcmFtZXdvcmsuQ2VudHJhbGl6ZWRMb2dnaW5nDUZyYW1ld29yay5DRlgURnJhbWV3b3JrLkNNZXNzYWdpbmcNRnJhbWV3b3JrLkNNUxBGcmFtZXdvcmsuQ29uZmlnEUZyYW1ld29yay5DcmF3bGVyEEZyYW1ld29yay5DUmVkaXMTRnJhbWV3b3JrLkRhc2hib2FyZBxGcmFtZXdvcmsuRmVhdHVyZUNvbnRpbmdlbmN5FkZyYW1ld29yay5GaWxlRXhjaGFuZ2UQRnJhbWV3b3JrLkZpbGVXUx1GcmFtZXdvcmsuSG90ZWxMYW5kTWFya1NlYXJjaBVGcmFtZXdvcmsuSW1hZ2VVcGxvYWQTRnJhbWV3b3JrLk1lbWNhY2hlZBJGcmFtZXdvcmsuTW9iaWxlQVAXRnJhbWV3b3JrLk1vYmlsZVNlcnZpY2URRnJhbWV3b3JrLlJlc3RmdWwURnJhbWV3b3JrLlNlY3VyaXR5V1MTRnJhbWV3b3JrLlNoeFNlYXJjaA1GcmFtZXdvcmsuU09BE0ZyYW1ld29yay5TcGlkZXJNYW4QRnJhbWV3b3JrLlRzVG9vbA1GcmFtZXdvcmsuVUJUGEZyYW1ld29yay5WYWNhdGlvblNlYXJjaBNGcmFtZXdvcmsuWm9vS2VlcGVyDEZSVC5BY3Rpdml0eQtGUlQuQm9va2luZwtGUlQuQ2F0YWxvZwpGUlQuTW9iaWxlDkZSVC5Nb25pdG9yaW5nEEZSVC5PcmRlclByb2Nlc3MKRlJULlBvcnRhbAtGUlQuUHJvZHVjdApGUlQuUmVwb3J0DEZSVC5TaG9wcGluZwtGVU4uQm9va2luZwxHYWdhLkJvb2tpbmcMR2FnYS5Ib3RzYWxlDkdhZ2EuSW50ZXJmYWNlCkdhZ2EuT3JkZXIMR2FnYS5Qcm9jZXNzDEdhZ2EuUHJvZHVjdA1HYWdhLlN1cHBsaWVyC0dhZ2EuU3dpdGNoCkdhZ2EuVG9vbHMLR2FnYS5WZW5kb3IMR2lmdC5Cb29raW5nEEdpZnRDYXJkLkFjY291bnQVR2lmdENhcmQuQ29uZmlnQ2VudGVyFUdpZnRDYXJkLkNyb3dkZnVuZGluZw5HaWZ0Q2FyZC5PcmRlchFHaWZ0Q2FyZC5TZXJ2aWNlcw1Hcm91cC5Cb29raW5nDUdyb3VwLkNvbm5lY3QLR3JvdXAuT3JkZXINR3JvdXAuUHJvY2Vzcw1Hcm91cC5Qcm9kdWN0DUdyb3VwLlNlcnZpY2UMR3JvdXAuU3dpdGNoDEdyb3VwLlZlbmRvchFHcm91cC5WZW5kb3JQcmljZRVHcm91cC5WZW5kb3JQcmljZV9EZWwOR3JvdXAuV2lyZWxlc3MNSGVsbG8uQm9va2luZw1IZWxsby5Ib3RzYWxlD0hlbGxvLkludGVyZmFjZQtIZWxsby5PcmRlcg1IZWxsby5Qcm9jZXNzDUhlbGxvLlByb2R1Y3QOSGVsbG8uU3VwcGxpZXIMSGVsbG8uU3dpdGNoC0hlbGxvLlRvb2xzDEhlbGxvLlZlbmRvcgxISHRyYXZlbC5BUEkQSEh0cmF2ZWwuQm9va2luZwxISHRyYXZlbC5FRE0LSEh0cmF2ZWwuSDUQSEh0cmF2ZWwuTUJUX0FQSRJISHRyYXZlbC5NQlRfT3JkZXIUSEh0cmF2ZWwuTUJUX1Byb2R1Y3QOSEh0cmF2ZWwuT3JkZXIQSEh0cmF2ZWwuUHJvZHVjdBRISHRyYXZlbC5Ta3lzZWFzX0FQSRhISHRyYXZlbC5Ta3lzZWFzX0Jvb2tpbmcbSEh0cmF2ZWwuU2t5c2Vhc19NYW5hZ2VtZW50FkhIdHJhdmVsLlNreXNlYXNfT3JkZXIYSEh0cmF2ZWwuU2t5c2Vhc19Qcm9kdWN0C0hvdGVsLkFnZW50DUhvdGVsLkJvb2tpbmcNSG90ZWwuSG90c2FsZQ9Ib3RlbC5JbnRlcmZhY2UOSG90ZWwuTW9iaWxlV1MLSG90ZWwuT3JkZXIOSG90ZWwuT1NlcnZpY2UNSG90ZWwuUHJvY2Vzcw1Ib3RlbC5Qcm9kdWN0DkhvdGVsLlN1cHBsaWVyDEhvdGVsLlN3aXRjaAtIb3RlbC5Ub29scwxIb3RlbC5WZW5kb3ICSFIMSFItVHJhaW5naW5nDkh0bEludi5Cb29raW5nDkh0bEludi5Qcm9kdWN0D0luZm9zZWMuYmlnZGF0YQ9JbmZvc2VjLmNhcHRjaGEMSW5mb3NlYy5jY2ltDWluZm9zZWMuY3J5cHQLSW5mb3NlYy5zc28PSW5zdXJhbmNlLkFnZW50EUluc3VyYW5jZS5Cb29raW5nEUluc3VyYW5jZS5Qcm9jZXNzEUluc3VyYW5jZS5Qcm9kdWN0EEluc3VyYW5jZS5Td2l0Y2gQSW5zdXJhbmNlLlZlbmRvcgZJVC5BTVMKSVQuaW5mb3NlYwpJVC5MT0dHSU5HC0lULk9QU1RPT0xTCktQSSBQb3J0YWwQTGFicy5BcHBsaWNhdGlvbhJMYWJzLkJpZ2Zvb3RwcmludHMJTGFicy5PcGVuDUxhYnMuUGxhdGZvcm0MTHZwaW5nLjEyMzA2DUx2cGluZy5GbGlnaHQKTHZwaW5nLkhhbw9MdnBpbmcuTWFpblNpdGUMTHZwaW5nLlRyYWluEkx2cGluZy5UcmF2ZWxBZ2VudBFMdnBpbmcuVHJhdmVsaW5mbwxNYWxsLkJvb2tpbmcMTWFsbC5PZmZsaW5lC01hbGwuT25saW5lCk1hbGwuT3JkZXIMTWFsbC5Qcm9kdWN0C01hbGwuVmVuZGVyEk1hcmtldC5BY2hpZXZlbWVudA9NYXJrZXQuQ2FtcGFpZ24OTWFya2V0LkNoYW5uZWwOTWFya2V0LlNlcnZpY2UJTWFya2V0aW5nBE1pY2UMTUlDRS5Cb29raW5nCk1JQ0UuT3JkZXIMTUlDRS5QaWN0dXJlDE1JQ0UuUHJvY2VzcwxNSUNFLlByb2R1Y3QNT3V0aWUuQm9va2luZwdQYWNrYWdlDVBhY2thZ2UuQWdlbnQPUGFja2FnZS5Cb29raW5nDVBhY2thZ2UuQ2FjaGULUGFja2FnZS5DYXIOUGFja2FnZS5DcnVpc2UPUGFja2FnZS5Ib3RzYWxlD1BhY2thZ2UuTWVzc2FnZQ1QYWNrYWdlLk9yZGVyD1BhY2thZ2UuUHJvY2Vzcw9QYWNrYWdlLlByb2R1Y3QQUGFja2FnZS5TZXJ2aWNlcxJQYWNrYWdlLlNPQVNlcnZpY2UOUGFja2FnZS5Td2l0Y2gMUGFja2FnZS5UZXN0DlBhY2thZ2UuVmVuZG9yDFBhY2thZ2UuVmlzYQ9QYXltZW50LkFjY291bnQMUGF5bWVudC5CYXNlDFBheW1lbnQuQmlsbBBQYXltZW50LkNhcmRSaXNrDlBheW1lbnQuQ2FzaGVyD1BheW1lbnQuQ2FzaGllcg5QYXltZW50LkNvdXBvbgxQYXltZW50LkVwYXkUUGF5bWVudC5Kb2J3c0Nhc2hpZXIUUGF5bWVudC5Kb2J3c1BheW1lbnQXUGF5bWVudC5Kb2J3c1NldHRsZW1lbnQKUGF5bWVudC5LMw5QYXltZW50Lk1vYmlsZRBQYXltZW50Lk1vbmV0YXJ5D1BheW1lbnQuT2ZmbGluZQ5QYXltZW50Lk9ubGluZRFQYXltZW50LlByb21vY29kZQtQYXltZW50LlJUUA5QYXltZW50LlN3aXRjaBJQYXltZW50LlRoaXJkUGFydHkNUGF5bWVudC5UTVBheRNQYXltZW50LlRyYW5zYWN0aW9uFlBlcnNvbmFsQ2VudGVyLkJhbGFuY2UUUGtnSW5zdXJhbmNlLkJvb2tpbmcSUGtnSW5zdXJhbmNlLk9yZGVyFFBrZ0luc3VyYW5jZS5Qcm9kdWN0GVB1YkJpelNlcnZpY2UuQmlsbFNlcnZpY2UbUHViQml6U2VydmljZS5Db3Vwb25TZXJ2aWNlGFB1YkJpelNlcnZpY2UuQ1JNU2VydmljZR5QdWJCaXpTZXJ2aWNlLkluc3VyYW5jZVNlcnZpY2UbUHViQml6U2VydmljZS5MaW5rVG9QYXltZW50GlB1YkJpelNlcnZpY2UuTGlwaW5TZXJ2aWNlHlB1YkJpelNlcnZpY2UuUHJvbW90aW9uU2VydmljZRFQdWJCaXpTZXJ2aWNlLlRvcApRRWFhLkFnZW50DFFFYWEuQm9va2luZwpRRWFhLkNhY2hlDFFFYWEuSG90c2FsZQpRRWFhLk9yZGVyDFFFYWEuUHJvY2VzcwxRRWFhLlByb2R1Y3QNUUVhYS5TZXJ2aWNlcw9RRWFhLlNPQVNlcnZpY2ULUUVhYS5Td2l0Y2gJUUVhYS5UZXN0C1FFYWEuVmVuZG9yDFFFVGVzdC5DYWNoZQ5RRVRlc3QuSG90c2FsZRBRRVRlc3QuSW50ZXJmYWNlClFFVGVzdC5NRE0NUUVUZXN0LlN3aXRjaAtRRVRlc3QuVGVzdAxRRVRlc3QuVG9vbHMNUUVUZXN0MS5BZ2VudA9RRVRlc3QxLkJvb2tpbmcNUUVUZXN0MS5DYWNoZQ9RRVRlc3QxLkhvdHNhbGUNUUVUZXN0MS5PcmRlcg9RRVRlc3QxLlByb2Nlc3MPUUVUZXN0MS5Qcm9kdWN0EFFFVGVzdDEuU2VydmljZXMSUUVUZXN0MS5TT0FTZXJ2aWNlDlFFVGVzdDEuU3dpdGNoDFFFVGVzdDEuVGVzdA5RRVRlc3QxLlZlbmRvchNSaXNrQ29udHJvbC5BY2NvdW50E1Jpc2tDb250cm9sLlBheW1lbnQOU2FsaW5hLkJvb2tpbmcOU2FsaW5hLkhvdHNhbGUQU2FsaW5hLkludGVyZmFjZQxTYWxpbmEuT3JkZXIOU2FsaW5hLlByb2Nlc3MOU2FsaW5hLlByb2R1Y3QPU2FsaW5hLlN1cHBsaWVyDVNhbGluYS5Td2l0Y2gMU2FsaW5hLlRvb2xzDVNhbGluYS5WZW5kb3IVU2NoZWR1bGUuSXRpbmVyYXJ5TWdyD1NlYXJjaC5BY3Rpdml0eRNTZWFyY2guQXV0b0NvbXBsZXRlDVNlYXJjaC5DcnVpc2UKU2VhcmNoLkRBUwpTZWFyY2guRGl5DVNlYXJjaC5HbG9iYWwVU2VhcmNoLmdsb2JhbHNlYXJjaGg1FVNlYXJjaC5Hc0F1dG9jb21wbGV0ZQ1TZWFyY2guR3NEZXN0DlNlYXJjaC5Hc0V2ZW50DFNlYXJjaC5Hc1BvaQ1TZWFyY2guR3NSZXN0EFNlYXJjaC5Hc1RvcFNob3AMU2VhcmNoLkhvdGVsE1NlYXJjaC5Ib3RlbENvbW1lbnQPU2VhcmNoLk1hcmtsYW5kFFNlYXJjaC5NdWx0aUxhbmd1YWdlClNlYXJjaC5QT0kJU2VhcmNoLlFBEVNlYXJjaC5RUldTZXJ2aWNlDVNlYXJjaC5SZWNvcmQRU2VhcmNoLlNjZW5pY3Nwb3QKU2VhcmNoLlNkYwpTZWFyY2guU2h4EVNlYXJjaC5TaW1pbGFyaXR5ClNlYXJjaC5UQUMNU2VhcmNoLlRpY2tldA9TZWFyY2guVG9waG90ZWwSU2VhcmNoLlRyYXZlbG5vdGVzFVNlYXJjaC5UcmF2ZWxzaG9wcGluZwtTZWFyY2guVHVhbgxTZWFyY2guVXNlcnMPU2VhcmNoLlZhY2F0aW9uDFNlYXJjaC5YdHJpcBFTZWxlY3RlZC5TZXJ2aWNlcwxTZWxlY3RlZC5XZWIWU2V0dGxlbWVudC5MaXF1aWRhdGlvbhJTZXR0bGVtZW50Lk9mZmxpbmURU2V0dGxlbWVudC5PbmxpbmURU2V0dGxlbWVudC5TZXR0bGULU0hYLkJvb2tpbmcJU0hYLk9yZGVyEFNvbmdHdW8uQWNjb3VudHMPU29uZ0d1by5Cb29raW5nDVNvbmdHdW8uSG90ZWwNU29uZ0d1by5Kb2J3cw1Tb25nR3VvLk9yZGVyClNvbmdHdW8uV1MHU3RhcldheQhTdXBwb3J0cx1TeXNEZXYuQ2xvdWRNYW5hZ2VyLkJhcmVNZXRhbApTeXNEZXYuQ1A0ClN5c0Rldi5EQUwLU3lzRGV2LmlIdWINU3lzRGV2LlBvcnRhbAR0ZXN0DFRlc3QuSG90c2FsZQ1UZXN0LlNlcnZpY2VzD1Rlc3QuU09BU2VydmljZQpUZXN0NC5CYXNlC1Rlc3Q0LkNhY2hlD1Rlc3Q0LkZyYW1ld29yawlUZXN0NC5Hb3YJVGVzdDQuTURNC1Rlc3Q0LlJEU3lzDFRlc3Q0LlNlYXJjaAlUZXN0NC5TT0EKVGVzdDQuVGVzdBJUaGluZ3N0b2RvLkJvb2tpbmcNVGhpbmdzdG9kby5INRVUaGluZ3N0b2RvLk5hbWlSZXBvcnQSVGhpbmdzdG9kby5PcGVuQVBJEFRoaW5nc3RvZG8uT3JkZXISVGhpbmdzdG9kby5Qcm9kdWN0EVRoaW5nc3RvZG8uVmVuZG9yClRvb2xzLkJhc2UNVG9vbHMuT2ZmbGluZQxUb3VyLkJvb2tpbmcHVG91ci5INQpUb3VyLk9yZGVyDFRvdXIuUHJvZHVjdApUb3VyLlRvb2xzC1RvdXIuVmVuZG9yDVRyYWluLkFjY291bnQLVHJhaW4uQWRtaW4NVHJhaW4uQm9va2luZwpUcmFpbi5EYXRhCFRyYWluLmg1CVRyYWluLkpvYgxUcmFpbi5Nb2JpbGULVHJhaW4uT3JkZXIRVHJhaW4uT3JkZXJDZW50ZXIaVHJhaW4uT3V0aWUuc2VydmljZS5vbmxpbmUSVHJhaW4uT3V0aWVCb29raW5nDVRyYWluLlByb2R1Y3QMVHJhaW4uU3dpdGNoDFRyYWluLlRpY2tldA9UcmFpbi5UaWNrZXRpbmcSVHJhaW4uVGlleW91LkFkbWluEFRyYWluLlRpZXlvdS5BcHAUVHJhaW4uVGlleW91LkJvb2tpbmcTVHJhaW4uVGlleW91LkNvbW1vbhZUcmFpbi5UaWV5b3UuTWFya2V0aW5nElRyYWluLlRpZXlvdS5PcmRlchJUcmFpbi5UaWV5b3UuVW5pb24MVHJhaW4uVmVuZG9yC1RyYWluLlhCaW5kEVRyYWluSW50bC5Cb29raW5nD1RyYWluSW50bC5PcmRlchFUcmFpbkludGwuUHJvZHVjdBBUcmFpbkludGwuVmVuZG9yGVRyYXZlbEd1aWRlJkNvbW11bml0eS5hcHAcVHJhdmVsR3VpZGUmQ29tbXVuaXR5LmRlc3JlcxxUcmF2ZWxHdWlkZSZDb21tdW5pdHkuc2VhcmNoHVRyYXZlbEd1aWRlJkNvbW11bml0eS5zZXJ2aWNlGVRyYXZlbEd1aWRlJkNvbW11bml0eS55b3UKVHJhdmVsSW5mbxNUcmF2ZWxNb25leS5Cb29raW5nEFRyYXZlbE1vbmV5LkNvcmUPVHJhdmVsTW9uZXkuQ1pCGFRyYXZlbE1vbmV5LkRpc3RyaWJ1dGlvbhJUcmF2ZWxNb25leS5HbG9iYWwZVHJhdmVsTW9uZXkuTGlwaW5UcmFuc2ZlchBUcmF2ZWxNb25leS5NYWxsE1RyYXZlbE1vbmV5Lk9wZW5BUEkTVHJhdmVsTW9uZXkuUHJvZHVjdA9UcmF2ZWxNb25leS5YQ0IJVHNUb29sLkZ4FVVzZXJJbnNpZ2h0LlJlY29tbWVuZA9Vc2VySW5zaWdodC5VaXADV0FQCldBUC5DbGllbnQHV0FQLk5FVAlXQVAuT3JkZXIMV0FQLlNjaGVkdWxlCldBUC5TZXJ2ZXIJV0FQLlRvdWNoDVdBUC5Xb3JrQmVuY2gJV0FQLllvdXRoFFdlYkV4aGliaXRpb24uQ0NhcmRzFVdlYkV4aGliaXRpb24uUmV2aWV3cwtZb3UuT3BlbkFwaRJZb3V0aC5Ob3RpZmljYXRpb24MWW91dGguU3F1YXJlFdIEAi0xAjQ0AjQzAjQyAjQ1BDQzMDIENDMwMwQ0MzAxAjQxBDc2MDIENzYwNQQ3NjAzBDc2MDEENzYwNAI5MAQzNjAyBDM2MDMEMzYwMQQyNzAzBDI3MDIEMjcwMQQyNzA0BDI3MDUCMTkEMjMwMQQyMzA4BDIzMDIEMjUwMQQyNTAzBDI1MDIEOTAwNAQ5MDA5BDkwMjIEOTAwMQQ5MDAzBDkwMTIEOTAwNgQ5MDE3BDkwMTgEOTAwNQQ5MDAyBDkwOTkEOTAyMAQ5MDE5BDkwMTMEOTAyMQI5MgQ5MTAzBDUzMDgENTMwNAQ1MzAyBDUzMDMENTMwOQQ1MzA2BDUzMDcENTMxMQQ1MzEwBDUzMDEENzIwOQQ3MjcyBDYwMDgENjAwMgQ2MDAzBDYwMDQENzIwOAQ2MDA5BDcyMTAENzI5OQQ2MTAxBDYwMTMENjAxNAQ2MDEyBDYwMTEENjE2MQQ2MTA4BDYwMDYENjEwMgQ2MTAzBDYxMDQENjAwNQQ2MDEwBDYxMDkENjExMAQ2MDk5BDYxMDcENjEwNQQyNjA1BDI2MDcEMjYwMQQyNjAzBDI2MDQEMjYwNgQ4ODAxBDg4MDUEODgwOAQ4ODA2BDg4MDMEODgwMgQ4ODA0BTEwMDAxBTEwMDA0BDQ3MDIENDcwMwQ0NzAxBTEwMDEwBDMxMDEENDkwMQQ0OTAyBDQ5MDMCOTQCMTUEMTUxMQQxNTAxBDE1MDYEMTUwMgQxNTAzBDE1MDQEMTUwOQQxNTEwBDE1MDcEMTUwNQQ0ODAzBDcxMDIENzEwNwQ3MTA2BDcxMDMENzEwMQQ3MTA1BDcxMDQEOTEwMgQ5MTAxBDkxMTEEOTEwOQQ5MTA3BDkxMDUEOTAxMQQ5MTA0BDkxMDYEOTEwOAQ5MTEwAjkzBTEwMjAxAjE2BDQ4MDcENDgwOAQ0ODA5BDQ4MDQENDgwNgQ0ODAyBDQ4MDUENDgwMQI0OQQ0MjAxBDczMDIENzMwNgQ3MzAxBDczMDMENzMwOAQ3MzA1BDczMDcENzMwNAQ1ODAxAjIxBDMzMDMEMzMwMgQzMzAxBDQ0MDMENDQwMQQ0NDAyBDEwMTMEMTAxMQQxMDE0BDEwMTIEMTAxNQIxMgQxMjA2BDEyMDEEMTIxNQQxMjA5BDEyMTEEMTIxNgQxMjIwBDEyMDIEMTIwMwQxMjA0BDEyMTAEMTIwNwQxMjA4BDEyMjEEMTIyMgQxMjA1AjEzBDEzMDYEMTMwNwQxMzA4BDEzMDEEMTMwMgQxMzA0BDEzMTAEMTMwNQI0OAI5NgI5MQQ5MjAyBDkyMTAEOTIxMwQ5MjAxBDkyMzAEOTIyMQQ5MjE1BDkyMTcEOTIxNAQ5MjIwBDkyMDcEOTIwMwQ5MjA1BDkyMjMEOTIxMQQ5MjA0BDkyMjUEOTIyNAQ5MjI3BDkyMjgEOTIxNgQ5MjE5BDkyMTgEOTIzMQQ5MjI2BDkyMDgEOTIwNgQ5MjA5BDc0MDYENzQwMwQ3NDAyBDc0MDgENzQwOQQ3NDA0BDc0MDEENzQwNQQ3NDEwBDc0MDcEOTUwMQQ2MjAxBDYyMTEENjIwOAQ2MjAyBDYyMDMENjIwNAQ2MjA5BDYyMTAENjIwNwQ2MjA1BDI0MDEEMjQwNQQyNDAyBDI0MDQEMjQwNgQyNDAzBDIxMDEEMjExMQQyMTAyBDIxMDMEMjEwNAQyMTA2BDIxMTAEMjEwNQQyMTEzBDIxMTIEMjEwNwQ2MzAxBDYzMTEENjMwOAQ2MzAyBDYzMDMENjMwNAQ2MzA5BDYzMTAENjMwNwQ2MzA1BDQwMDQENDAwMQQ0MDA5BDQwMTUENDAwOAQ0MDA2BDQwMDcENDAwMgQ0MDAzBDQwMTAENDAxMwQ0MDEyBDQwMTQENDAxMQQxMTA2BDExMDEEMTExMQQxMTA4BDExMTMEMTEwMgQxMTEyBDExMDMEMTEwNAQxMTA5BDExMTAEMTEwNwQxMTA1AjIyBDU0MDEEMjIwMQQyMjAzBDY2MDUENjYwMwQ2NjA3BDY2MDEENjYwNAQxNjA2BDE2MDcEMTYwMwQxNjA0BDE2MTAEMTYwNQQ1MjAxBDUyOTgENTIwMgQ1MjAzBDk0MDEEMzUwMQQzNTA1BDM1MDMEMzUwNAQzOTA3BDM5MDIEMzkwNgQzOTA1BDM5MDQEMzkwMwQzOTAxBDU2MDIENTYwNgQ1NjA1BDU2MDMENTYwMQQ1NjA0BDg5MDMEODkwNQQ4OTA0BDg5MDcCMTcCMjMEMTcwMQQxNzAyBDE3MDUEMTcwMwQxNzA0BDgyMDECMTQEMTQwNgQxNDAxBDE0MDkEMTQxMQQxNDEyBDE0MTQEMTQxNQQxNDAyBDE0MDMEMTQwNAQxNDA3BDE0MDgEMTQxMAQxNDk5BDE0MDUEMTQxMwQ0MTE1BDQxMDQENDExNAQ0MTA1BDQxMDEENDExNwQ0MTA2BDQxMDIENDExMQQ0MTA5BDQxMTIENDEwNwQ0MTIyBDQxMTMENDEyMQQ0MTIwBDQxMDgENDExOAQ0MTUxBDQxMTkENDEwMwQ0MTE2BDUxMDEEODcwMQQ4NzAyBDg3MDMEODAwMgQ4MDA0BDgwMDEEODAwNwQ4MDAzBDgwMDYEODAwNQQ4MDA4BDE4MDYEMTgwMQQxODA5BDE4MTgEMTgwMgQxODAzBDE4MDQEMTgwNwQxODA4BDE4MTAEMTg5OQQxODA1BDkzMDkEOTM5MwQ5MzA4BDkzMDYEOTMxMAQ5Mzk5BDkzMDcEODEwNgQ4MTAxBDgxMDkEODE4MQQ4MTAyBDgxMDMEODEwNAQ4MTA3BDgxMDgEODExMAQ4MTk5BDgxMDUENjcwMQQ2NzAyBDY0MDEENjQxMQQ2NDA4BDY0MDIENjQwMwQ2NDA0BDY0MDkENjQxMAQ2NDA3BDY0MDUEMzgxMAQ5NzExBDk3MjMEOTcyMQQ5NzIwBDk3MTYEOTcwOQQ5NzEyBDk3MjkEOTc0MQQ5NzM0BDk3MzYEOTczMwQ5NzM1BDk3MDEEOTcxMwQ5NzAzBDk3MjcEOTczNwQ5NzMyBDk3MjQEOTcyNQQ5NzA2BDk3MjYEOTcwOAQ5NzA3BDk3MjgEOTczOQQ5NzQwBDk3MzEEOTcyMgQ5NzE5BDk3MzgEOTcwMgQ5NzE3BDI4MDEEMjgwMgQ1NTAyBDU1MDQENTUwMwQ1NTAxBTEwMzAyBTEwMzAxBDQ2MDcENDYwMgQ0NjAxBDQ2MDUENDYwMwQ0NjA0AjcxAjE4BDkzMDMEOTMwNQQ5MzAyBDkzMDQEOTMwMQQ5OTk5AjExAzEwNwMxMDgENzkwNAQ3OTA5BDc5MDEENzkwMwQ3OTA2BDc5MDUENzkxMAQ3OTAyBDc5OTkENzIwMQQ3MjA3BDcyMDYENzIwNQQ3MjAyBDcyMDMENzIwNAQ1NzAxBDU3MDIEODYwMQQ4NjA1BDg2MDIEODYwMwQ4NjA2BDg2MDQEMjA2MAQyMDA2BDIwMDEEMjA1NgQyMDExBDIwMDcEMjAxNQQyMDAyBDIwMTQEMjAxMgQyMDEzBDIwMDQEMjAxMAQyMDU3BDIwMDgEMjA1MwQyMDU4BDIwNTEEMjA1NAQyMDU5BDIwNTIEMjA1NQQyMDA1BDIwMDkEMjkwMgQyOTAzBDI5MDEEMjkwNAQ5OTA3BDk5MDYEOTkwMwQ5OTAyBDk5MDECNDYEMTkwMQQ2MDAxBDE5MTAEMTkwNQQxOTA4BDE5MDYEMTkxMQQxOTA3BDE5MDQEMTkwOQQ5NjA3BDUwMDEENTAwMgIyMAQzNDAyBDM0MDMEMzQwNwQzNDA1BDM0MDEEMzQwNAQzNDEwBDM0MDYENDUwMQQ0NTAyBDk5MDQEOTgxMQQ5ODEwFCsD0gRnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cWAWZkAgMPZBYCAgEPZBYCZg8QZA8WAWYWARAFFeivt+mAieaLqea1i+ivleacjeWKoQUBMGcWAWZkAgQPZBYCAgEPZBYCZg8QZA8WAWYWARAFG+ivt+mAieaLqea1i+ivleivt+axguexu+WeiwUBMGcWAWZkZBTBE6HMvPTjTR6/NJKKGY1kLDoW";

		
		public string send_self(String version,int RequestType, TextBox request_url, string paramData, bool isPro) {
			
			string response = "";
			builder.DataEncoding = Encoding.UTF8;
			builder.Url = request_url.Text;

            if (version == "SOA1.0")
            {
				paramData = "__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE=" + System.Web.HttpUtility.UrlEncode(this.VIEWSTATE) + 
					"&__EVENTVALIDATION=" + System.Web.HttpUtility.UrlEncode(this.EVENTVALIDATION) + "&txtWebURL=" + System.Web.HttpUtility.UrlEncode(builder.Url) + 
					"&txtRequest=" + System.Web.HttpUtility.UrlEncode(paramData) + "&btSend=" + System.Web.HttpUtility.UrlEncode("发送请求");
				
				string real_url = "http://soa.dev.sh.ctriptravel.com/SOA.TestTool/Default.aspx";				
				response = this.PostWebRequest(version, real_url, paramData, builder.DataEncoding, isPro);
				response = this.Soa1responsebuild(response);
			}
            else if (version == "SOA2.0")
            {
				response = this.PostWebRequest(version, request_url.Text, paramData, builder.DataEncoding, isPro);
			}
            else if (version == "Restful")
            {
                response = this.GetWebRequest(request_url.Text, builder.DataEncoding);
            }
            else
            {
                response = this.PostWebRequest(version, request_url.Text, paramData, builder.DataEncoding, isPro);
            }
			try {
        		response = utils.FormatXml(response);
        	} catch (Exception) {
        		MessageBox.Show("response格式错误，只打印出原生的response");
                response = Regex.Unescape(response);
        		return response;
        	}
            return response;
		}

      
        
        private string Soa1build(string requestbody) {
        	return "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:tem=\"http://tempuri.org/\"><soap:Header/>" +
        		"<soap:Body><tem:Request><tem:requestXML><![CDATA[" + requestbody + "]]></tem:requestXML></tem:Request></soap:Body></soap:Envelope>";
        }
        
        private string Soa1responsebuild(string responsebody) {
        	string temp = Regex.Split(responsebody, "id=\"txtResponse\">", RegexOptions.IgnoreCase)[1];
        	return HttpUtility.HtmlDecode(Regex.Split((Regex.Split(responsebody, "id=\"txtResponse\">", RegexOptions.IgnoreCase)[1]), "</textarea>", 
        	                                          RegexOptions.IgnoreCase)[0]);
        }

        private string PostWebRequest(String version, string postUrl, string paramData, Encoding dataEncode, bool isPro)
        {
            string ret = string.Empty;
            try
            {   
                byte[] byteArray = dataEncode.GetBytes(paramData); //转化
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
                webReq.Method = "POST";
                //webReq.Proxy = new WebProxy("localhost:8099");
                webReq.Headers.Add("SOA20-Client-AppId", "381004");
                if (version == "SOA1.0") {
                	//webReq.ContentType = "application/soap+xml;charset=UTF-8;action=\"http://tempuri.org/Request\"";
                	webReq.ContentType = "application/x-www-form-urlencoded";
            	}
                
                if (version == "SOA2.0" && isPro) {
                	webReq.Proxy = new WebProxy("coreproxysite.ctripcorp.com:8080");
            	}
                webReq.ContentLength = byteArray.Length;
                Stream newStream = webReq.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);//写入参数
                newStream.Close();
                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
                string isZip = response.ContentEncoding;
                StreamReader sr;
                if (isZip.Equals("gzip")) {
                	sr = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress), encode);
                }
                else
                	sr = new StreamReader(response.GetResponseStream(), encode);
                ret = sr.ReadToEnd();
                sr.Close();
                response.Close();
                newStream.Close();
            }
            catch (Exception ex)
            {
               return ex.Message + "\n" + ret;
            }
            return ret;
        }
        
        private string GetWebRequest(string getUrl, Encoding dataEncode)
        {
            string ret = string.Empty;
            try
            {
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(getUrl));
                webReq.Method = "GET";
                //webReq.Proxy = new WebProxy("coreproxysite.ctripcorp.com:8080");

                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                ret = sr.ReadToEnd();
                sr.Close();
                response.Close();
            }
            catch (Exception ex)
            {
               return ex.Message + "\n" + ret;
            }
            return ret;
        }
    }
}
